package com.gitee.dolt.boot.request;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;


/**
 * 分页参数
 *
 * @author LYH
 */
@Data
@ApiModel(value = "PageParams", description = "分页参数")
public class PageParams<T> extends QueryParams<T> {

    @ApiModelProperty(value = "页面大小", example = "10")
    private long size = 10;

    @ApiModelProperty(value = "当前页", example = "1")
    private long current = 1;

    @ApiModelProperty(value = "是否查询总数", example = "true")
    private boolean searchCount = true;

    /**
     * 支持多个字段排序，用法：
     * eg.1, 参数：{order:"name,id", order:"descending,ascending" }。 排序： name desc, id asc
     * eg.2, 参数：{order:"name", order:"descending,ascending" }。 排序： name desc
     * eg.3, 参数：{order:"name,id", order:"descending" }。 排序： name desc
     *
     * @return
     */
    @JsonIgnore
    public IPage buildPage() {
        PageParams params = this;
        //没有排序参数
        Page page = new Page(params.getCurrent(), params.getSize(), params.isSearchCount());
        if (StrUtil.isNotEmpty(params.getSort())) {
            page.setOrders(getOrders());
        }
        return page;
    }


}
